#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAXSIZE 10

void swap(int* a, int* b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

void Rearrange(int a[], int n) {
    int low = 0, high = n - 1;
    while (low < high) {
        while (low < high && a[high] >= 0) {  // 从右向左找第一个负数
            --high;
        }
        while (low < high && a[low] < 0) {  // 从左向右找第一个非负数
            ++low;
        }
        swap(&a[low], &a[high]);  // 交换负数和非负数
    }
}

void PrintArray(int a[], int n) {
    for (int i = 0; i < n; ++i) {
        printf("%d ", a[i]);
    }
    printf("\n");
}

int main() {
    int a[MAXSIZE];
    srand(time(NULL));
    for (int i = 0; i < MAXSIZE; ++i) {
        a[i] = rand() % 20 - 10;  // 生成-10到9的随机数
    }

    PrintArray(a, MAXSIZE);
    Rearrange(a, MAXSIZE);
    PrintArray(a, MAXSIZE);

    return 0;
}